package shujia.day13;

import java.io.FileInputStream;
import java.io.InputStreamReader;

/*
    字符流 = 字节流 + 编码表：
        字符输出流：Writer【抽象类】
                    - OutputStreamWriter
        字符输入流：Reader【抽象类】
                    - InputStreamReader

    构造方法：
        InputStreamReader(InputStream in) 创建一个使用默认字符集的InputStreamReader。
        InputStreamReader(InputStream in, String charsetName) 创建一个使用命名字符集的InputStreamReader。

    字符输入流读取数据的方式：
        public int read() 一次读取一个字符
        public int read(char[] cbuf) 一次读取一个字符数组

 */
public class InputStreamReaderDemo1 {
    public static void main(String[] args) throws Exception{
        // InputStreamReader(InputStream in)
//        InputStreamReader isr = new InputStreamReader(new FileInputStream("src/shujia/day13/b1.txt"));
        // InputStreamReader(InputStream in, String charsetName) 指定编码读取字符数据
        InputStreamReader isr = new InputStreamReader(new FileInputStream("src/shujia/day13/b1.txt"),"GBK");

        //public int read() 一次读取一个字符
//        System.out.print((char) isr.read());
//        System.out.print((char) isr.read());
//        System.out.print((char) isr.read());
//        System.out.print((char) isr.read());
//        System.out.print((char) isr.read());
//        int i = 0;
//        while ((i=isr.read())!=-1){
//            System.out.print((char) i);
//        }

        //public int read(char[] cbuf) 一次读取一个字符数组
        char[] chars = new char[1024];
        int length = 0;
        while ((length=isr.read(chars))!=-1){
            String s = new String(chars, 0, length);
            System.out.print(s);
        }

        // 释放资源
        isr.close();
    }
}
